NLP

A Survey of Response Selection in Retrieval-based Chatbots

本文主要总结检索式对话系统中回复选择的模型方法,从基于编码的方法和基于匹配的方法两方面介绍,重点突出最新的一些进展,总体来说,多表征交互融合的方法基本上是SOTA。

Introduction

回复选择Response Selection是对话领域一个重要问题,主要研究的是给定一段对话历史,预测相应的回复。总体来说,分为两大类方法:检索式和生成式。

检索式方法是从候选集中选择一个最合适的答复,类似于排序问题。检索式方法又分为两类:

  • 基于编码的方法:这类方法属于比较早期的模型,一般只用作基线模型,核心思想是使用hand-craft features or neural features分别对reponse和context做编码,得到向量表征,然后计算两个向量之间的相似度。例如Lowe et al. 2015 提出了使用tf-idf和RNN做编码,Kadlec, Schmid, and Kleindienst 2015 提出了基于CNN, LSTM, BiLSTM的编码方法。这类方法由于没有考虑context和response之间的交互,所以准确率低于下面介绍的基于匹配的方法,但由于计算量小,一般会使用此类方法先对候选集做初步筛选,例如从100000条候选项中选取前top100条,然后再使用基于匹配的方法。

  • 基于匹配的方法:这类方法属于目前最先进的模型,核心是通过计算context和response之间的交互信息来得到一个相关性分数,然后选择相关性分数最大的一个回复。早期基于匹配的方法基本是简单的使用注意力机制计算token-level的匹配信息,例如 MV-LSTM (Wan et al. 2016), Matching-LSTM (Wang and Jiang 2016), Attentive-LSTM (Tan, Xiang, and Zhou 2015)。之后改进为同时计算token-level和utterance-level的交互信息,例如Multi-View (Zhou et al. 2016)DL2R(Yan, Song, and Wu 2016)。一个比较有影响力的工作是 SMN (Wu et al. 2017) ,分别计算word-level和segment-level的相关矩阵,然后卷积池化,最后通过一个GRU,使用隐层状态来计算匹配分数。之后DUA (Zhang et al. 2018) and DAM (Wu et al. 2018) 继承了这种思想,区别在于使用gated self attention和transformer结构做编码。DSTC7的ESIM(Chen et al.2019)则是借鉴自然语言推理NLI中的模型,直接将context拼接成一个长序列,再计算交互信息,实验结果优于DAM及其之前的模型。进一步,MRFN(Tao et al.2019) 则是将之前提到的所有的粒度表示融合到一起,并比较了早期阶段FES,中间阶段FIS或最后阶段FLS三种融合策略。

Models

_以部分模型为例作为介绍_

Multi-View (Zhou et al. 2016) : Multi-view Response Selection for Human-Computer Conversation

Figure 1: Multi-view response selection model

Multi-View模型核心是在token-level和utterance-level分别进行交互。模型分为两部分,最上面是将context和response的所有token通过一个GRU,使用最后的隐层状态计算相关性分数:
$$p_{w}(y=1 | c, r)=\sigma\left(\overrightarrow{c_{w}}^{T} W_{w} \overrightarrow{r_{w}}+b_{w}\right)$$
同理,utterance-level是指使用卷积和池化操作分别得到context和response中每句话的表征(一般来说response是一句话),然后同样得到一个相关性分数:
$$
p_{u}(y=1 | c, r)=\sigma\left(\overrightarrow{c_{u}}^{T} W_{u} \overrightarrow{r_{u}}+b_{u}\right)
$$
最终将这两个概率分布求和得到最终的结果:
$$
\begin{array}{c}{s_{m t v}(y=1 | c, r)=} {p_{w}(y=1 | c, r)+p_{u}(y=1 | c, r)}\end{array}
$$

训练的损失函数为:
$$
\begin{array}{l}{\mathcal{L}=\mathcal{L}_{\mathcal{D}}+\mathcal{L}_{\mathcal{L}}+\frac{\lambda}{2}|\theta|} \\ {\mathcal{L}_{\mathcal{D}}=\sum_{i}\left(p_{w}\left(l_{i}\right) \overline{p_{u}}\left(l_{i}\right)+p_{u}\left(l_{i}\right) \overline{p_{w}}\left(l_{i}\right)\right)} \\ {\mathcal{L}_{\mathcal{L}}=\sum_{i}\left(1-p_{w}\left(l_{i}\right)\right)+\sum_{i}\left(1-p_{u}\left(l_{i}\right)\right)}\end{array}
$$

SMN (Wu et al. 2017): Sequential Matching Network: A New Architecture for Multi-turn Response Selection in Retrieval-Based Chatbots

Figure  2:  Architecture  of  SMN

模型使用词向量直接构建response和context utterance的序列表征得到矩阵R与U,然后计算R与U的相似度矩阵(简单的做内积运算);同时让response和context utterance的序列表征经过GRU,得到隐层状态序列,再计算二者的相似度矩阵,得到segment level的信息。之后对这两个矩阵分别做CNN卷积运算,池化,最后再经过GRU,利用隐层状态得到匹配分数。最后的$L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]$有三种计算方式,以下是第三种Attention(实验效果最好,注意$t_{s}$ query是一个训练参数)
$$
\begin{array}{l}{t_{i}=\tanh \left(\mathbf{W}_{1,1} h_{u_{i}, n_{u}}+\mathbf{W}_{1,2} h_{i}^{\prime}+\mathbf{b}_{1}\right)} \\ {\alpha_{i}=\frac{\exp \left(t_{i}^{\top} t_{s}\right)}{\sum_{i}\left(\exp \left(t_{i}^{\top} t_{s}\right)\right)}} \\ {L\left[h_{1}^{\prime}, \ldots, h_{n}^{\prime}\right]=\sum_{i=1}^{n} \alpha_{i} h_{i}^{\prime}}\end{array}
$$
损失函数:
$$
-\sum_{i=1}^{N}\left[y_{i} \log \left(g\left(s_{i}, r_{i}\right)\right)+\left(1-y_{i}\right) \log \left(1-g\left(s_{i}, r_{i}\right)\right]\right.
$$

DAM (Wu et al. 2018): # Multi-Turn Response Selection for Chatbots with Deep Attention Matching Network

Figure 3: Overview of Deep Attention Matching Network

对于context中的每一个utterance $u_{i}=[w_{u_{i},k}]_{k=0}^{n_{u_{i}-1}}$,$n_{u_{i}}$ 代表 $u_{i}$中words的数量,一个候选回复 $r=[w_{r,t}]_{t=0}^{n_{r}-1}$,$n_{r}$ 代表 $r$中words的数量。$u_{i},r$共享相同的词向量,分别得到两个词向量的序列 $U_{i}^{0}=[e_{u_{i},0}^{0},…,e_{u_{i},n_{u_{i}}-1}^{0}]$ 和 $R^{0}=[e_{r,0}^{0},…,e_{r,n_{r}-1}^{0}]$,其中e是一个d维的词向量。接下来针对于$u_{i}$和$r$构建不同粒度的表征,具体是用L个相同的self-attention层,得到$[U_{i}^{l}]_{l=0}^{L}$和$[R^{l}]_{l=0}^{L}$。之后对于不同的粒度$l\in [0,L]$,分别计算两个相似度矩阵$M_{self}^{u_{i},r,l}, M_{cross}^{u_{i},r,l}$,分别衡量textual information和dependency information。最后将这些矩阵合并成三维的立方体,通过三维卷积和池化得到一维向量,经过单层全连接得到匹配分数。

Attentive Module类似于Transformer结构,但是没有使用multi-head和position-encoding。

Figure  4:  Attentive  Module

给定utterance $u_{i}$ 和 response r 的词向量序列$U_{i}^{0},R^{0}$,DAM模型将其作为Attentive Module的输入,并且堆叠多个Module:

其中$l\in [0,L]$,代表不同的粒度。得到$[U_{i}^{l}]_{l=0}^{L}$和$[R^{l}]_{l=0}^{L}$之后,在不同的粒度上计算segment-segment匹配矩阵:

上式代表$U_{i}^{l}[k]$和$R^{l}[t]$的内积,也即$U_{i}$中第k个embedding与$R^{l}[t]$第t个embedding做内积,这代表浅层的文本相关性。

另一种cross-attention-matrix定义为:

作者认为这代表语义相关性。DAM模型将这些$M_{self}^{u_{i},r,l}, M_{cross}^{u_{i},r,l}$矩阵拼接起来($l\in [0,L]$,共2(L+1)个),得到Q

上式中$n=2(L+1)$,对应每个channel上的元素为:

之后经过conv_3d和pooling_3d得到特征向量$f_{match}(c,r)$,再经过一层感知器:

DAM的损失函数为负极大似然函数。

ESIM(Chen et al.2019): Sequential Attention-based Network for Noetic End-to-End Response Selection

模型整体结构图如下所示,主要分为3个部分:Input EncodingLocal MatchingMatching Composition

(b)  Cross  attention-based  method

Input Encoding

  1. 将对话历史拼接成一个长序列
  2. 对于长序列中的每一个词将多种词向量拼接,然后用一个relu的前馈层压缩维度
  3. 将对话历史和候选答复分别用LSTM进行编码,得到context 隐层状态 $c_{i}^{s}$ 和 response 隐层状态 $r_{j}^{s}$

Local Matching

对对话历史和应答之间的局部语义关系的建模是确定应答是否正确的关键。比如,正确的应答句通常涉及对话历史中的一些关键字,这可以通过局部语义建模来获得。本文使用cross-attention机制来将来自对话历史和应答句的tokens对齐,然后计算token级别的语义关系。attention权重计算方式如下:

(4)式和(5)式分别对应context 隐层状态 $c_{i}^{s}$对所有的response 隐层状态 $r_{j}^{s}$做注意力和response 隐层状态 $r_{j}^{s}$对所有的context 隐层状态 $c_{i}^{s}$做注意力,其中均采用内积运算。

By comparing vector pair $<c_{i}^{s}, c_{i}^{d}>$, we can model the token-level semantic relation between aligned token pairs.

F是单层全连接以减小维度。

Matching Composition

确定应答句是否为正确的下一句话,需要一个合成层来合成上面得到的局部匹配的结果。这里再次使用BiLSTM来读取局部匹配向量并学习区分关键的局部匹配向量来获得整体的语义关系 。

之后对BiLSTM2的隐层做池化操作,得到固定长度的向量,再通过一个MLP得到softmax输出:

MRFN(Tao et al.2019): Multi-Representation Fusion Network for Multi-turn Response Selection in Retrieval-based Chatbots

Figure  6:  Multi-representation  fusion  network  with  three  fusing  strategies  (FES,  FIS,  FLS).  ui  is  the  i-th  utterance  in  a  context and  r  is  a  response  candidate.  We  only  draw  three  representations  for  each  utterance  for  ease  of  illustration  in  this  figure.

_details in https://zhuanlan.zhihu.com/p/63214453_

Reference